﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BUS;
using System.Text;

public partial class ShoppingCart : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["ProductID"] != null)
        {
            //nếu Session chưa được khởi tạo thị tạo sesson....
            if (!IsPostBack)
            {
                AddOneProductToCart();
            }
        }
        if (!IsPostBack)
        {
            LoadGridView();

        }
    }

    private void AddOneProductToCart()
    {
        int id = Int32.Parse(Request.QueryString["ProductID"]);
        SanPhamBUS sp = SanPhamBUS.GetSanphamByID(id);
        if (sp.SoTon > 0)
        {
            Basket basket = new Basket();
            basket.AddItem(id, 1);
        }
        else
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "alert('Sản phẩm đã hết hàng!!!');window.location='Products.aspx';", true);
    }

    private void AlertNullCart()
    {   
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "alert('Giỏ hàng của bạn chưa có sản phẩm nào.');window.location='Products.aspx';", true);
    }

    private void LoadGridView()
    {
        Basket basket = new Basket();
        if (basket.Cart.ChiTietDatHangs.Count < 1)
        {
            AlertNullCart();
            return;
        }
        gvCart.DataSource = basket.Cart.ChiTietDatHangs;
        gvCart.DataBind();
        lblTotal.Text = basket.Cart.strThanhTien;
    }

    protected void btnDelAll_Click(object sender, EventArgs e)
    {
        Basket basket = new Basket();
        basket.RemoveAllItem();
        LoadGridView();
    }
    protected void gvCart_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            int rIndex = e.RowIndex;
            Basket basket = new Basket();
            basket.Cart.ChiTietDatHangs.RemoveAt(rIndex);
            LoadGridView();
        }
        catch { }
    }
    protected void btnUpdateCart_Click(object sender, EventArgs e)
    {
        Basket basket = new Basket();
        StringBuilder error = new StringBuilder();
        foreach (GridViewRow row in gvCart.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                try
                {
                    int quantity = Int32.Parse(((TextBox)row.FindControl("txtQuantity")).Text);
                    int productid = Convert.ToInt32(gvCart.DataKeys[row.RowIndex].Value);
                    
                    //lấy tồn kho của sản phẩm với productid
                    SanPhamBUS sp = SanPhamBUS.GetSanphamByID(productid);
                    if (sp.SoTon < quantity) //TonKho < Soluong đặt hàng thì báo lỗi 
                    {
                        error.Append(String.Format(@"* Sản phẩm {0} chỉ có thể đặt hàng tối đa {1} sản phẩm \n", sp.TenSanPham, sp.SoTon));
                        //set số lượng đặt hàng tối đa bằng số tồn của sản phẩm đó
                        basket.SetItemQuantity(productid, sp.SoTon);                       
                    }
                    else
                        basket.SetItemQuantity(productid, quantity);


                }
                catch (Exception)
                { throw; }
            }
        }


        string strError = error.ToString();
        if (error.Length > 0)
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "alert('" + strError + "');", true);

        LoadGridView();
    }
    protected void btnSumit_Click(object sender, EventArgs e)
    {
        try
        {
            string abc = ddlGioiTinh.SelectedItem.Value.ToString();
            KhachHangBUS kh = new KhachHangBUS()
            {
                //  MaKhachHang = lblMaKhachHang.Text,
                HoTen = abc + " " + txtHoTen.Text,
                SoDienThoai = txtSoDienThoai.Text,
                DiaChi = txtDiaChi.Text,
                CMND = txtCMND.Text,
                Email = txtEmail.Text
            };

            Basket basket = new Basket();
            basket.Cart.KhachHang = kh;

            basket.Add();

            MultiView1.SetActiveView(ViewDangKyThanhCong);

            basket.RemoveAllItem();
        }
        catch (Exception)
        {
            MultiView1.SetActiveView(ViewDangKyThatBai);
            throw;
        }



    }
    protected void btnPayment_Click(object sender, EventArgs e)
    {
        StringBuilder error = new StringBuilder();

        foreach (GridViewRow row in gvCart.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                try
                {
                    int productid = Convert.ToInt32(gvCart.DataKeys[row.RowIndex].Value);
                    Basket basket = new Basket();
                    //lấy số lượng đã đặt sản phẩm với productid
                    ChiTietDatHangBUS ct = basket.Cart.ChiTietDatHangs.SingleOrDefault<ChiTietDatHangBUS>(p => p.IDSanPham == productid);

                    //lấy tồn kho của sản phẩm với productid
                    SanPhamBUS sp = SanPhamBUS.GetSanphamByID(productid);

                    if (sp.SoTon < ct.SoLuong) //TonKho < Soluong đặt hàng thì báo lỗi 
                    {
                        error.Append(String.Format(@"* Sản phẩm {0} chỉ có thể đặt hàng tối đa {1} sản phẩm \n", sp.TenSanPham, sp.SoTon));
                        //set số lượng đặt hàng tối đa bằng số tồn của sản phẩm đó
                        basket.SetItemQuantity(productid, sp.SoTon);

                    }

                }
                catch (FormatException)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "alert('loi');", true);
                }
            }
        }

        string strError = error.ToString();
        //hiện ra câu thông báo
        if (error.Length > 0)
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "alert('" + strError + "');", true);

        LoadGridView();
        gvCart.Enabled = false;

        ddlGioiTinh.Items.Add("Ông");
        ddlGioiTinh.Items.Add("Bà");
        lblMaKhachHang.Text = KhachHangBUS.GetNextID();
        MultiView1.SetActiveView(ViewDangKyThongTin);


    }

}
